module.exports = function(app) {	
	return {
		"get":function(p_fnsuccess,p_fnerror){
			app.models.reuniao.find().exec().then(p_fnsuccess,p_fnerror);
		}
		,"getByPeriodo":function(p_periodo,p_fnsuccess,p_fnerror){
			app.models.reuniao.find({
				"momento":{"$gte":p_periodo.inicio,"$lt":p_periodo.fim}
			}).sort({"momento":"asc"}).exec().then(p_fnsuccess,p_fnerror);
		}
		,"insert":function(p_reuniao,p_fnsuccess,p_fnerror) {	
			console.log(p_reuniao);	
			app.models.reuniao.create(p_reuniao).then(
				function(dta){	
					console.log(dta);			
					p_fnsuccess(dta._id);
				}
				,function(erro){
					console.log(erro);
					p_fnerror(erro);
				}
			);
		}
		,"update":function(p_reuniao,p_fnsuccess,p_fnerror){
			app.models.reuniao.findByIdAndUpdate(p_reuniao._id,p_reuniao).exec().then(
				function(dta){
					p_fnsuccess(true);
				}
				,p_fnerror
			);
		}
		,"delete":function(p_id,p_fnsuccess,p_fnerror) {
			app.models.reuniao.remove({"_id":p_id}).exec().then(
				function(){
					p_fnsuccess(true);
				}
				,p_fnerror
			);
		}
		,"addDiscurso":function(p_idReuniao,p_discurso,p_fnsuccess,p_fnerror) {				
			app.models.reuniao.findById(p_idReuniao,function(erro,data){
				if(erro){
					p_fnerror(erro);
				}else{
					var newdoc = data.discursos.create(p_discurso);
					console.log(newdoc);
					data.discursos.push(newdoc);				
					data.save(function (err) {
						if(err){
							return handleError(err);
						};
						console.log('the sub-doc was saved2');
					});
					p_fnsuccess(newdoc._id);				
				};			
			});  
		}
		,"updateDiscurso":function(p_idReuniao,p_discurso,p_fnsuccess,p_fnerror) {	
			app.models.reuniao.findOneAndUpdate(
				{ "_id": p_idReuniao , "discursos._id": p_discurso._id }
				,{ "$set":{"discursos.$": p_discurso}}
				,function(err,doc) {
					if(err){
						p_fnerror(err);
					}else{
						p_fnsuccess(true);						
					}
				}
			);
		}
		,"deleteDiscurso":function(p_idReuniao,p_idDiscurso,p_fnsuccess,p_fnerror) {						
			app.models.reuniao.findByIdAndUpdate(p_idReuniao,{$pull:{"discursos":{_id:p_idDiscurso}}}).then(
				function(dta){		
					p_fnsuccess(true);
				}
				,p_fnerror
			);
		}
	};
};